package com.hl.payServer.model;

import java.util.List;

public class PageBean<T> {
    /**
     * 要返回的某一页的记录列表
     */
    private List<T> list;
    /**
     * 总记录数
     */
    private int allRow;
    /**
     * 总页数
     */
    private int totalPage;
    /**
     * 当前页
     */
    private int pageNum;
    /**
     * 每页记录数
     */
    private int pageSize;

    public PageBean(Integer pageNum, Integer pageSize) {
        if (pageNum == null || pageNum < 1) {
            this.pageNum = 1;
        }else{
            this.pageNum = pageNum;
        }
        if (pageSize == null || pageSize < 1) {
            this.pageSize = 20;
        }else{
            this.pageSize = pageSize;
        }
        if (this.pageSize > 100) {
            throw new IllegalArgumentException("每次查询每页最多100条!");
        }
    }

    /**
 　　 * 计算总页数
 　　 * @param allRow 总记录数
 　　 * @return 总页数
 　　 */
    public int countTotalPage(final int allRow){
        this.allRow = allRow;
        this.totalPage = allRow % pageSize == 0 ? allRow/pageSize : allRow/pageSize+1;
        return this.totalPage;
    }

    /**
 　　 * 计算当前页开始记录   sqlserver分页用 第1页就是1  第2页就是pageSize+1
 　　 * @return 当前页开始记录号
 　　 */
    public int countOffsetStart(){
        return pageSize*(pageNum-1)+1;
    }

    /**
　　  * 计算当前页结束记录
　　  * @return 当前页开始记录号
　　  */
    public int countOffsetEnd(){
        return pageSize*pageNum;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public int getAllRow() {
        return allRow;
    }

    public void setAllRow(int allRow) {
        this.allRow = allRow;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
}
